Building an ASP.NET Core web application using Model, View, and Controller (MVC)
मॉडल, व्यू और कंट्रोलर (MVC) की मदद से वेब एप्लीकेशन तैयार करना
इस अध्याय में हम समझेंगे कि मॉडल (Model), व्यू (View) और कंट्रोलर (Controller) की मदद से वेब एप्लीकेशन को कैसे तैयार किया जाता है।
हमने देखा कि मिडिलवेयर किस प्रकार क्लाइंट द्वारा भेजे गए रिक्वेस्ट को प्रोसेस करके अगले मिडिलवेयर को पाइपलाइन में भेज देता है, और यह प्रक्रिया तब तक चलती रहती है जब तक यह अंतिम मिडिलवेयर तक रिक्वेस्ट नहीं पहुंच जाता है।
याद रखें कि MVC एप्लीकेशन के अंतर्गत सबसे अंतिम मिडिलवेयर MVC मिडिलवेयर ही होता है। MVC मिडिलवेयर की सहायता से ब्राउज़र द्वारा भेजे गए रिक्वेस्ट को प्रोसेस करके HTML पेज को रिस्पॉन्स के रूप में ब्राउज़र के पास भेजा जाता है.
MVC मिडिलवेयर के दो उपयोग
MVC मिडिलवेयर के दो मुख्य उपयोग हो सकते हैं:
वेब पेज जनरेट करना: जैसा कि हमने देखा कि MVC मिडिलवेयर की सहायता से वेब पेज को जनरेट करके ब्राउज़र के पास भेज दिया जाता है।
विभिन्न फॉर्मेट में डेटा भेजना: MVC मिडिलवेयर का दूसरा उपयोग ब्राउज़र को विभिन्न फॉर्मेट में डेटा भेजने के लिए भी किया जा सकता है, उदाहरण के लिए XML या JSON फॉर्मेट में डेटा को क्लाइंट को भेजा जा सकता है। इस तरह की जरूरतें आमतौर पर वेब API (Web API) के संदर्भ में होती हैं। MVC मिडिलवेयर की सहायता से यह काम किया जा सकता है।
जैसा कि हम जानते हैं कि मिडिलवेयर के भीतर प्रोसेसिंग होती है, लेकिन MVC मिडिलवेयर के भीतर बिजनेस लॉजिक और UI (User Interface) कोड से संबंधित कोड का प्रोसेसिंग होता है, और यह अपने आप में बहुत ही बड़ा और कॉम्प्लिकेटेड होता है। कहने का अभिप्राय है कि MVC मिडिलवेयर बहुत ही बड़े और कॉम्प्लिकेटेड हो सकते हैं।
MVC डिज़ाइन पैटर्न की उत्पत्ति
MVC डिज़ाइन पैटर्न का उपयोग स्प्रिंग MVC (Java) जैसी अन्य फ्रेमवर्क में भी होता रहा है। माइक्रोसॉफ्ट ने MVC डिज़ाइन पैटर्न को इन एप्लीकेशंस को देखते हुए एक तरीके से अपनाया है। हम अगले अनुच्छेद में MVC डिज़ाइन पैटर्न के बारे में समझने की चेष्टा करेंगे। इसके लिए हमें मॉडल, व्यू और कंट्रोलर तीनों के कॉन्सेप्ट को बारी-बारी से समझना होगा।
मॉडल का कॉन्सेप्ट जटिल लग सकता है क्योंकि "मॉडल" शब्द का उपयोग अलग-अलग अर्थों में किया जाता है। एक शब्द का अलग-अलग अर्थ में प्रयोग होने के कारण किसी भी शुरुआती डेवलपर के लिए यह समझना थोड़ा सा मुश्किल होता है।
मॉडल का कॉन्सेप्ट
मॉडल से अभिप्राय:
डेटा (Data) और उस डेटा को प्रोसेस करने के लिए जो बिजनेस लॉजिक है, इन दोनों को मिला देने पर हमारा मॉडल का कॉन्सेप्ट पूरा होता है। अगर आपसे कोई पूछे मॉडल क्या है ASP.NET Core के अंतर्गत, तो मॉडल का अभिप्राय डेटा और उसके बिजनेस लॉजिक के समूह से है।
रिक्वेस्ट प्रोसेसिंग फ्लो: कंट्रोलर का प्रवेश बिंदु
जब क्लाइंट द्वारा किसी रिक्वेस्ट को सर्वर के पास भेजा जाता है, तो यदि रिक्वेस्ट वेब पेज के लिए या किसी डेटा के लिए होता है, तो वह रिक्वेस्ट मिडिलवेयर पाइपलाइन से गुजरते हुए अंत में MVC मिडिलवेयर के पास पहुंचता है। MVC मिडिलवेयर HttpContext ऑब्जेक्ट की मदद से रूटीन (Routing) को तय कर लेता है और अंतिम कंट्रोलर (Controller) और उसके एक्शन मेथड (Action Method) का निर्णय करता है। कहने का अभिप्राय यह है कि रिक्वेस्ट के प्रोसेसिंग करने के लिए सबसे पहले संबंधित कंट्रोलर का निर्णय करना पड़ता है।
रिक्वेस्ट प्रोसेसिंग के दृष्टिकोण से कंट्रोलर पहला एंट्री पॉइंट होता है, जहां उस रिक्वेस्ट की प्रोसेसिंग करने के लिए कई सारे एक्शन मेथड उपलब्ध होते हैं। कंट्रोलर उसमें से जो एक्शन मेथड वांछनीय है, उसका चयन करता है। एक्शन मेथड के भीतर बिजनेस लॉजिक होता है, जिसके अनुसार रिक्वेस्ट की प्रोसेसिंग की जाती है। एप्लीकेशन को मॉड्यूलर बनाने की दृष्टि से प्रोसेसिंग लॉजिक को एक अलग क्लास फाइल में लिखते हैं, उस क्लास फाइल का उपयोग हम एक्शन मेथड के भीतर कर लेते हैं।
💞 मॉडल, व्यू और कंट्रोलर के बीच कम्युनिकेशन फ्लो
मॉडल, व्यू, कंट्रोलर के कॉन्सेप्ट को समझने के लिए सबसे जरूरी है कि हम समझें कि इन तीनों के बीच में किस प्रकार कम्युनिकेशन होता है और कम्युनिकेशन का फ्लो डायरेक्शन किस तरफ होता है।
💗 कंट्रोलर से मॉडल (Controller to Model)
सबसे पहले जब रिक्वेस्ट कंट्रोलर के पास आता है, तो कंट्रोलर उस रिक्वेस्ट को प्रोसेस करने के लिए संबंधित डेटा की जरूरत महसूस करता है जिसे या तो फेच करके उसे लाना होता है या उस डेटा को अपडेट करना होता है। इसके लिए कंट्रोलर मॉडल के साथ कम्युनिकेट करता है। कम्युनिकेशन का यह डायरेक्शन कंट्रोलर से मॉडल की ओर होता है। दूसरे शब्दों में, मॉडल कंट्रोलर से कम्युनिकेट नहीं करता है। मॉडल तो निष्क्रिय होता है; कंट्रोलर सक्रिय रूप से मॉडल से कम्युनिकेट करके वांछनीय डेटा को प्राप्त कर लेता है या मॉडल के बिजनेस लॉजिक का उपयोग करते हुए डेटा को अपडेट कर देता है।
💗 कंट्रोलर से व्यू (Controller to View)
जब कंट्रोलर के पास डेटा प्राप्त हो जाता है, तो कंट्रोलर फिर व्यू के साथ कम्युनिकेट करता है और व्यू को वह डेटा पास कर देता है जो उसने मॉडल से प्राप्त किया है। यहां भी यह बात ध्यान रखने वाली है कि व्यू भी मॉडल के साथ कम्युनिकेट करके डेटा प्राप्त कर सकता है, लेकिन मॉडल व्यू के साथ कम्युनिकेट नहीं करता है। दूसरे शब्दों में, मॉडल और व्यू के बीच में कम्युनिकेशन एक तरफा ही होता है, जो व्यू द्वारा मॉडल से कम्युनिकेशन किया जाता है।
💗 व्यू से कंट्रोलर (View to Controller)
व्यू के भीतर प्रेजेंटेशन लॉजिक होता है। उसके अनुसार वह डेटा को रिप्रेजेंट करने के लिए प्रोसेस कर देता है और रिजल्ट को (जैसे कि एक्शन रिजल्ट या व्यू रिजल्ट) कंट्रोलर के पास भेज देता है। कंट्रोलर का एक्शन मेथड उसे एक्शन रिजल्ट के रूप में या व्यू रिजल्ट के रूप में प्राप्त करता है।
HTML रेंडरिंग और MVC मिडिलवेयर
यहां एक आवश्यक और महत्वपूर्ण बात समझने की यह है कि व्यू रिजल्ट को MVC मिडिलवेयर के पास भेज दिया जाता है कंट्रोलर के द्वारा, और MVC मिडिलवेयर रिजल्ट या एक्शन रिजल्ट को एग्जीक्यूट करके HTML पेज के रूप में रेंडर करता है जिसे ब्राउज़र के पास भेज दिया जाता है।
👉 अतः, याद रखें कि एक्शन मेथड के द्वारा HTML पेज का रेंडरिंग नहीं होता है, बल्कि यह कार्य MVC मिडिलवेयर के द्वारा संपन्न किया जाता है।
टिप्पणियाँ
एक टिप्पणी भेजें